package cn.like.log.entity;

import cn.hutool.core.date.DatePattern;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.*;
import lombok.experimental.Accessors;

import java.time.LocalDateTime;

/**
 * <p>
 * 实体类
 * 系统日志
 * </p>
 */
@Data
@NoArgsConstructor
@AllArgsConstructor
@ToString(callSuper = false)
@EqualsAndHashCode(callSuper = false)
@Accessors(chain = true)
public class OptLogDTO implements java.io.Serializable {
	
	private static final long serialVersionUID = 1L;
	
	/**
	 * 操作IP
	 */
	private String requestIp;
	
	/**
	 * 日志类型
	 * #LogType{OPT:操作类型;EX:异常类型}
	 */
	private String type;
	
	/**
	 * 操作人
	 */
	private String userName;
	
	/**
	 * 操作描述
	 */
	private String description;
	
	/**
	 * 类路径
	 */
	private String classPath;
	
	/**
	 * 请求类型
	 */
	private String actionMethod;
	
	/**
	 * 请求地址
	 */
	private String requestUri;
	
	/**
	 * 请求类型
	 * #HttpMethod{GET:GET请求;POST:POST请求;PUT:PUT请求;DELETE:DELETE请求;PATCH:PATCH请求;TRACE:TRACE请求;HEAD:HEAD请求;OPTIONS:OPTIONS请求;}
	 */
	private String httpMethod;
	
	/**
	 * 请求参数
	 */
	private Object params;
	
	/**
	 * 返回值
	 */
	private Object result;
	
	/**
	 * 异常详情信息
	 */
	private Object exDesc;
	
	/**
	 * 异常描述
	 */
	private Object exDetail;
	
	/**
	 * 开始时间
	 */
	@JsonFormat(pattern = DatePattern.CHINESE_DATE_TIME_PATTERN)
	private LocalDateTime startTime;
	
	/**
	 * 完成时间
	 */
	@JsonFormat(pattern = DatePattern.CHINESE_DATE_TIME_PATTERN)
	private LocalDateTime finishTime;
	
	/**
	 * 消耗时间
	 */
	private Long consumingTime;
	
	/**
	 * 浏览器
	 */
	private String ua;
	
	private Long createUser;
}
